package com.kingyea.mobilepolice.apimanage.serviceinfo.dao;

import com.kingyea.mobilepolice.apimanage.serviceinfo.bean.ServiceInfo;
import com.kingyea.mobilepolice.apimanage.serviceinfo.bean.ServiceInfoVo;
import com.kingyea.mobilepolice.apimanage.serviceinfo.vo.ServiceInfoCountVo;
import com.kingyea.mobilepolice.apimanage.serviceinfo.vo.ServiceInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * @author Mr.Lin
 * @version v1.0.0
 * @description ServiceInfoMapper
 * @date Created in 2018-03-02 16:37:14
 */
@Repository
public interface ServiceInfoMapper {

    /**
     * 通过ID获取对象
     */
    ServiceInfo getById(@Param("id") Integer id);

    ServiceInfo getBySerialNo(@Param("serialNo") String serialNo);

    /**
     * 通过ID获取VO对象
     */
    ServiceInfoVO getVOById(@Param("id") Integer id);

    /**
     * 通过ID删除对象
     */
    void deleteById(@Param("id") Integer id);

    /**
     * 更新对象
     */
    void update(ServiceInfo obj);

    /**
     * 保存对象
     */
    void save(ServiceInfo obj);

    /**
     * 查询列表
     */
    List<ServiceInfo> list(ServiceInfo obj);

    List<ServiceInfoVO> searchByCondition(Map<String, Object> map);

    int changeOnLineStatus(Map<String, Object> map);

    /**
     * 根据标识符查询并且排除某个id的记录
     */
    List<ServiceInfo> getBySerialNoAndExcludeID(@Param("serialNo") String serialNo, @Param("id") Integer id);

    /**
     * 带条件统计接口数量
     */
    Integer countByCondition(Map<String, Object> map);

    /**
     * 每个接口的总调用次数列表
     */
    List<ServiceInfoVo> countAllService(Map<String, Object> map);

    /**
     * 每个接口今日调用次数列表
     */
    List<ServiceInfoVo> countTodayService(Map<String, Object> map);

    /**
     * 每个网络各种统计
     */
    List<ServiceInfoCountVo> serviceInfoCountByLoction(Map<String, Object> map);

    void requesterCountTask(Map<String, Object> map);

    /**
     * 根据ID 获取完整接口对象，包括出入参数
     *
     * @param id
     * @return com.kingyea.mobilepolice.apimanage.serviceinfo.vo.ServiceInfoVO
     * @author Mr.Lin
     * @date 2018/5/5 18:15
     */
    ServiceInfoVO getFullVoById(Integer id);

    /**
     * 根据搜索条件搜索接口和提供方列表
     *
     * @param map
     * @return java.lang.Object
     * @author Mr.Lin
     * @date 2018/5/22 22:20
     */
    List searchServiceAndProvider(Map<String, Object> map);
}
